#include "msgexamp.h"
#include <stdio.h>
#include <stdlib.h>
#include <sys/msg.h>

int main(int argc, char **argv)
{
    if (argc != 2)
    {
        fprintf(stderr, "Usage: %s <msg_type>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    // 从命令行参数获取消息类型
    long msg_type = atol(argv[1]);
    if (msg_type < 1 || msg_type > 3)
    {
        fprintf(stderr, "Message type must be 1, 2, or 3\n");
        exit(EXIT_FAILURE);
    }

    // 获取消息队列
    int msgid = msgget(MSG_KEY, 0666);
    if (msgid == -1)
    {
        perror("msgget");
        exit(EXIT_FAILURE);
    }

    // 接收指定类型的消息
    struct my_msg_st msg;
    if (msgrcv(msgid, &msg, sizeof(msg.text), msg_type, 0) == -1)
    {
        perror("msgrcv");
        exit(EXIT_FAILURE);
    }

    printf("Received message type %ld: %s\n", msg_type, msg.text);
    return 0;
}